#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/thermal/qmi_thermal.h>

&cpufreq_hw {
	#address-cells = <1>;
	#size-cells = <1>;
	lmh_dcvs0: qcom,limits-dcvs@f550800 {
		compatible = "qcom,msm-hw-limits";
		interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
		qcom,affinity = <0>;
		reg = <0xf550800 0x1000>,
			<0xf521000 0x1000>;
		qcom,no-cooling-device-register;
	};

	qcom,cpu-isolation {
		compatible = "qcom,cpu-isolate";
		cpu0_isolate: cpu0-isolate {
			qcom,cpu = <&CPU0>;
			#cooling-cells = <2>;
		};

		cpu1_isolate: cpu1-isolate {
			qcom,cpu = <&CPU1>;
			#cooling-cells = <2>;
		};

		cpu2_isolate: cpu2-isolate {
			qcom,cpu = <&CPU2>;
			#cooling-cells = <2>;
		};

		cpu3_isolate: cpu3-isolate {
			qcom,cpu = <&CPU3>;
			#cooling-cells = <2>;
		};
	};
};

&soc {
	qmi-tmd-devices {
		compatible = "qcom,qmi-cooling-devices";

		modem {
			qcom,instance-id = <QMI_MODEM_INST_ID>;

			modem_pa: modem_pa {
				qcom,qmi-dev-name = "pa";
				#cooling-cells = <2>;
			};

			modem_proc: modem_proc {
				qcom,qmi-dev-name = "modem";
				#cooling-cells = <2>;
			};

			modem_current: modem_current {
				qcom,qmi-dev-name = "modem_current";
				#cooling-cells = <2>;
			};

			modem_skin: modem_skin {
				qcom,qmi-dev-name = "modem_skin";
				#cooling-cells = <2>;
			};

			modem_vdd: modem_vdd {
				qcom,qmi-dev-name = "cpuv_restriction_cold";
				#cooling-cells = <2>;
			};

			modem_wlan: modem_wlan {
				qcom,qmi-dev-name = "wlan";
				#cooling-cells = <2>;
			};
		};

		adsp {
			qcom,instance-id = <QMI_ADSP_INST_ID>;

			adsp_vdd: adsp_vdd {
				qcom,qmi-dev-name = "cpuv_restriction_cold";
				#cooling-cells = <2>;
			};
		};
	};

	lmh_cpu_vdd: qcom,lmh-cpu-vdd@f550800 {
		compatible = "qcom,lmh-cpu-vdd";
		reg =  <0xf550800 0x1000>;
		#cooling-cells = <2>;
	};

	cxip_cdev: cxip-cdev@3ed000 {
		compatible = "qcom,cxip-lm-cooling-device";
		reg = <0x3ed000 0xc008>;
		qcom,thermal-client-offset = <0x8000>;
		/* 4th offset to bypass VICTIM1 */
		qcom,bypass-client-list = <0x3004 0x4004 0x6004 0xc004>;
		#cooling-cells = <2>;
	};
};

&thermal_zones {
	mapss-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 0>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	video-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 1>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	wlan-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	cpuss-0-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 3>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	cpuss-1-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 4>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	mdm-0-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 5>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	mdm-1-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 6>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	gpu-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 7>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	hm-center-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 8>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	camera-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&tsens0 9>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};

			reset-mon-cfg {
				temperature = <115000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};
	};

	xo-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_XO_THERM_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	pa-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_AMUX_THM1_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	quiet-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_AMUX_THM2_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	msm-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_AMUX_THM3_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	chg-skin-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_GPIO3_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	conn-therm-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_GPIO4_PU2>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	s3-die-temp-usr {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "user_space";
		thermal-sensors = <&pm2250_adc_tm_iio ADC_SBUx>;
		wake-capable-sensor;
		trips {
			active-config0 {
				temperature = <125000>;
				hysteresis = <1000>;
				type = "passive";
			};
		};
	};

	gpu-step {
		polling-delay-passive = <10>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 7>;
		wake-capable-sensor;
		trips {
			gpu_cxip_trip: gpu-cxip-trip {
				temperature = <95000>;
				hysteresis = <20000>;
				type = "passive";
			};

			gpu_step_trip: gpu-trip {
				temperature = <95000>;
				hysteresis = <0>;
				type = "passive";
			};

			gpu_cx_mon: gpu-cx-mon {
				temperature = <100000>;
				hysteresis = <5000>;
				type = "passive";
			};

		};

		cooling-maps {
			cxip-cdev {
				trip = <&gpu_cxip_trip>;
				cooling-device = <&cxip_cdev 1 1>;
			};

			gpu_cdev {
				trip = <&gpu_step_trip>;
				cooling-device = <&msm_gpu THERMAL_NO_LIMIT
							THERMAL_NO_LIMIT>;
			};

			gpu-cx-cdev0 {
				trip = <&gpu_cx_mon>;
				cooling-device = <&msm_gpu THERMAL_MAX_LIMIT
							THERMAL_MAX_LIMIT>;
			};

			gpu-cx-cdev1 {
				trip = <&gpu_cx_mon>;
				cooling-device = <&modem_proc 3 3>;
			};

			gpu-cx-cdev2 {
				trip = <&gpu_cx_mon>;
				cooling-device = <&modem_pa 3 3>;
			};
		};
	};

	cpuss-0-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 3>;
		wake-capable-sensor;

		trips {
			cpu0_2_config: cpu-0-2-config {
				temperature = <110000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu0_cdev {
				trip = <&cpu0_2_config>;
				cooling-device = <&cpu0_isolate 1 1>;
			};

			cpu2_cdev {
				trip = <&cpu0_2_config>;
				cooling-device = <&cpu2_isolate 1 1>;
			};
		};
	};

	cpuss-1-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 4>;
		wake-capable-sensor;

		trips {
			cpu1_3_config: cpu-1-3-config {
				temperature = <110000>;
				hysteresis = <10000>;
				type = "passive";
			};
		};

		cooling-maps {
			cpu1_cdev {
				trip = <&cpu1_3_config>;
				cooling-device = <&cpu1_isolate 1 1>;
			};

			cpu3_cdev {
				trip = <&cpu1_3_config>;
				cooling-device = <&cpu3_isolate 1 1>;
			};
		};
	};

	mdm-0-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 5>;
		wake-capable-sensor;
		trips {
			mdm0_cx_mon: mdm0-cx-mon {
				temperature = <100000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			mdm0-cx-cdev0 {
				trip = <&mdm0_cx_mon>;
				cooling-device = <&msm_gpu THERMAL_MAX_LIMIT
							THERMAL_MAX_LIMIT>;
			};

			mdm0-cx-cdev1 {
				trip = <&mdm0_cx_mon>;
				cooling-device = <&modem_proc 3 3>;
			};

			mdm0-cx-cdev2 {
				trip = <&mdm0_cx_mon>;
				cooling-device = <&modem_pa 3 3>;
			};
		};
	};

	mdm-1-step {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "step_wise";
		thermal-sensors = <&tsens0 6>;
		wake-capable-sensor;
		trips {
			mdm1_cx_mon: mdm1-cx-mon {
				temperature = <100000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			mdm1-cx-cdev0 {
				trip = <&mdm1_cx_mon>;
				cooling-device = <&msm_gpu THERMAL_MAX_LIMIT
							THERMAL_MAX_LIMIT>;
			};

			mdm1-cx-cdev1 {
				trip = <&mdm1_cx_mon>;
				cooling-device = <&modem_proc 3 3>;
			};

			mdm1-cx-cdev2 {
				trip = <&mdm1_cx_mon>;
				cooling-device = <&modem_pa 3 3>;
			};
		};
	};

	mapss-lowf {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "low_limits_floor";
		thermal-sensors = <&tsens0 0>;
		wake-capable-sensor;
		tracks-low;

		trips {
			mapss_trip: mapss-trip {
				temperature = <5000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			cx_vdd_cdev {
				trip = <&mapss_trip>;
				cooling-device = <&cx_cdev 0 0>;
			};

			mx_vdd_cdev {
				trip = <&mapss_trip>;
				cooling-device = <&mx_cdev 0 0>;
			};

			modem_vdd_cdev {
				trip = <&mapss_trip>;
				cooling-device = <&modem_vdd 0 0>;
			};

			adsp_vdd_cdev {
				trip = <&mapss_trip>;
				cooling-device = <&adsp_vdd 0 0>;
			};
		};
	};

	mapss-lowc {
		polling-delay-passive = <0>;
		polling-delay = <0>;
		thermal-governor = "low_limits_cap";
		thermal-sensors = <&tsens0 0>;
		wake-capable-sensor;
		tracks-low;

		trips {
			mapss_cap_trip: mapss-cap-trip {
				temperature = <5000>;
				hysteresis = <5000>;
				type = "passive";
			};
		};

		cooling-maps {
			lmh_cpu_cdev {
				trip = <&mapss_cap_trip>;
				cooling-device = <&lmh_cpu_vdd 1 1>;
			};
		};
	};
};
